package com.dameng;

import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

/**
 * @DataProvider
 *
 * 将方法标记为为测试方法提供数据。带批注的方法必须返回一个，其中每个方法都可以分配测试方法的参数列表。想要从中接收数据的@Test方法需要使用等于此批注名称的 dataProvider 名称。Object[][]Object[]DataProvider
 */
public class DataProviderTest {

    @DataProvider(name = "simple")
    public Object[][] create() {
        return new Object[][] {
                {"tom",  18},
                {"jerry", 5}
        };
    }

    @Test(dataProvider = "simple")
    public void testUser(String name, int age) {
        System.out.println(name + " -> " + age);
        //tom -> 18
        //jerry -> 5
    }

    @Test
    public void testObject() {
        Object[] objs = new Object[] {
                "tom",
                18
        };
        System.out.println(objs[0] + " -> " + objs[1]);
    }

    /**
    *   类级别复用dataProvider
    */
    @Test(dataProviderClass = GlobalDataProvider.class, dataProvider = "globalData")
    public void testCities(String city) {
        System.out.println(city);
    }


    /**
     * 并发测试  并行取数
     * @return
     */
    @DataProvider(name = "para", parallel = true)   // 默认 10 线程，可改
    public Object[][] para() {
        return new Object[100][0];   // 100 个空参数，模拟并发
    }


}
